#!/usr/bin/env node

// node cli 应用入口必须要有这样的文件头
// 如果是 Linux 或 macOS 系统还需要修改此文件的的读写权限为 755
// 具体是通过 chomd 755 cli.js 实现修改


// 脚手架工作过程
// 1. 通过命令行交互询问用户问题
// 2. 根据用户回答的结果生成文件
const fs = require('fs');
const path = require('path');
const inquirer = require('inquirer');
const ejs = require('ejs');



// 发起命令行询问配置项
const promptList = [
  {
    type: 'input',
    name:'project',
    message: '请输入项目名称',
    default: 'my_app',
  },
  {
    type: 'input',
    name:'username',
    message: '请输入用户名',
    default: 'username',
  },
  {
    type: 'list',
    name:'theme',
    message: '请选择主题',
    choices:[
      'freshGreen',
      'darkgrey',
      'blue'
    ],
    default: 'Default',
  },
]


inquirer.prompt(promptList).then(answers => {
  // 根据用户回答的结果生成对应的文件
  // 模板根目录
  const tempDir = path.join(__dirname, 'templates');
  // 目标目录
  const destDir = process.cwd();
  // 将模板下的文件全部转换到目标目录
  fs.readdir(tempDir, (err, files) => {
    if(err) {
      throw err;
    };
    files.forEach((file) => {
      // 通过模板引擎渲染路径下对应的文件
      ejs.renderFile(path.join(tempDir, file), answers, (err, result) => {
          if(err) {
            throw err;
          };
          fs.writeFileSync(path.join(destDir, file), result)
      })
    })
  })
})